package com.myscala.scala

import scala.collection.immutable.StringOps

/**
 * AnyVal值类型的声明
 */
object DataType {
  def main(args: Array[String]): Unit = {
    val a: Byte = 12
    println(a,a.getClass)

    val b: Short = 12
    println(b,b.getClass)

    val c: Int = 12
    println(c,c.getClass)

    val d: Long = 12L  //此处加不加L都行
    println(d,d.getClass)

    val e: Float = 1.22f  //此处需要加f
    println(e,e.getClass)

    val f: Double = 1.22
    println(f,f.getClass)

    val g: Boolean = false
    println(g,g.getClass)

    val h: Char = '@'
    println(h,h.getClass)

    val i: Unit = 123   // 此处无论赋值什么，值都是()
    println(i,i.getClass)

    /*
      特殊说明
      虽然String是java.lang.String.在Scala中属于AnyRef类型,
      但是在实际操作是会被隐式转换为StringOps类型属于AnyVal
      通过以下实验可以证明
     */
    val j: String = "123"
    println(j,j.getClass)

    val k: StringOps = "123"
    println(k,k.getClass)
  }

}
